package com.jf3q.front.controller;


import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;


@RestController
public class OssController {
    @Value("${ali.endpoint}")
    private String endpoint;
    @Value("${ali.endpoint2}")
    private String endpoint2;
    @Value("${ali.bucketName}")
    private String bucketName;
    @Value("${ali.accesskey}")
    private String accesskeyId;
    @Value("${ali.secretAccessKey}")
    private String secretAccesskey;

    @PostMapping("/upload")
    public String upload(String type, MultipartFile file){
        if (file==null || file.isEmpty()) {
            throw new RuntimeException("文件必填");
        }

        String originalFilename = file.getOriginalFilename();
        String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));

        SimpleDateFormat format= new SimpleDateFormat("yyyy/MM/dd");
        String dataPath = format.format(new Date());

        String fileName=dataPath+"/"+ UUID.randomUUID().toString().replace("-","")+suffix;

        StringBuffer objectName = new StringBuffer();
        objectName.append(type+"/");

        objectName.append(fileName);
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint,accesskeyId,secretAccesskey );

        try {
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName.toString(), file.getInputStream());

            // 上传文件。
            ossClient.putObject(putObjectRequest);
            String url="https://"+bucketName+"."+endpoint2+"/"+objectName;
            return url;
        } catch (Exception e) {

            throw new RuntimeException("上传阿里云失败");
        }   finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }

    }
}
